import axios from 'axios';
import {useLoginStore} from '@/store/index'
const encryptHeader = 'encrypt-key'; 

// 是否显示重新登录
export const isRelogin = { show: false };
export const globalHeaders = () => {
  return {
    Authorization: '123',
    clientid: '123'
  };
};

axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8';
axios.defaults.headers['clientid'] = '123';
let domain = process.env.NODE_ENV === 'production' ? 'http://127.0.0.1:8080' : './api'
// 创建 axios 实例
const service = axios.create({
  baseURL: domain,
  timeout: 10*60*1000
});

let loginStore = null
// 请求拦截器
service.interceptors.request.use(
  (config) => {
 
    // 对应国际化资源文件后缀
    config.headers['Content-Language'] = 'zh-CN';

    // const isToken = config.headers?.isToken === false;
    // // 是否需要防止数据重复提交
    // const isRepeatSubmit = config.headers?.repeatSubmit === false;
    // // 是否需要加密
    // const isEncrypt = config.headers?.isEncrypt === 'true';

    // if (!isToken) {
     if(loginStore == null) {
      loginStore = useLoginStore()
     }
    // }
    config.headers['Authorization'] = loginStore.tokenVal; // 让每个请求携带自定义token 请根据实际情况自行修改
     
    return config;
  },
  (error: any) => {
    return Promise.reject(error);
  }
);

// 响应拦截器
service.interceptors.response.use(
  (res) => { 
    console.log(res)
    //访问请求是正常的
    const err = {}
    if(res.status == 200) { 
      const resp = res.data || {}
      
      //业务返回是正常的
      if(resp.code == 200) { 
        //如果是登陆返回的，那么就要管理其token
        const data = resp.data
        let url = res.config.url
        if(url == "/login") {  
          loginStore.setToken(data.token)
        }
        return data
      }  else {
        err.code = resp.code
        err.msg = resp.msg
      }
    } else{
      err.code = res.status
      err.msg  = res.statusText
    }
    return Promise.reject(err)
  },
  (error: any) => {
    return Promise.reject(error);
  }
); 
// 导出 axios 实例
export default service;
